package final_;

public class FinalDetail01 {
    public static void main(String[] args) {
        CC cc = new CC();
        new EE().cal();
    }
}

class AA {
    /*
    final修饰的属性在定义时，必须赋初值
    1）定义时：
    2）在构造器中
    3）在代码块中
     */
    public final double TAX_RATE = 0.08;
    public final double TAX_RATE2;
    public final double TAX_RATE3;

    public AA() {
        TAX_RATE2 = 1.1;
    }
    {
        TAX_RATE3 = 8.8;
    }
}

class BB {
    /*
    如果final修饰的属性是静态的，则初始化的位置只能是
    1）定义时
    2）在静态代码块 不能在构造器中赋值
     */
    public static final double TAX_RATE = 1.1;
    public static final double TAX_RATE2;

    static {
        TAX_RATE2 = 3.3;
    }
}
//final类不能继承，但是可以实例化对象
final class CC {

}
//如果类不是final类，但是含有final方法则该方法,虽然不能重写，但可以被继承
class DD {
    public final void cal() {
        System.out.println("cal()方法");
    }
}
class EE extends DD { }

